const Koa = require('koa');
const Router = require("koa-router")
const session = require('koa-session')
const bodyParser = require('koa-bodyparser')
const path = require('path')
const static = require('koa-static')  // 引入静态资源中间件
const staticPath = './static'  // 静态资源默认地址
const DB = require("./module/db")

const app = new Koa();
const router = new Router()

app.use(static(
    path.join( __dirname,  staticPath)
))
app.use(static('views'));
app.use(static('static'));
app.use(bodyParser());

// 配置 session 中间件
app.keys = ['this is a key']
const CONFIG = {
    key: 'LXW',  // cookie key 默认值：koa:sess
    maxAge: 1000 * 60 * 60 * 24,  // 过期时间
    // renew : true,
}

app.use(session(CONFIG, app))

//登录状态判断
app.use((req,res,next)=>{
    //若请求的接口是login，便不拦截这个接口
    if(req.url=="/login"){next()}
    
    //开始拦截其他的接口
    else{
        //判断name是否存在
        if(req.session.name === null || !req.session.name[0]){
            res.send({
                code:500,
                msg:"用户未登录"
            })
            
        }
        //若存在name，状态便是登录
         else {
            next()
        }
    }
})

app.use(async (ctx, next) => {
    await next()
    if (ctx.status == 404) {
        ctx.status = 404
        ctx.body = '您访问的页面好像丢了';
    }
})

// 调用首页子应用
//app.use(/\/(index)?/, require('./router/index'))

//获取当前页面数据  --- 以及其他用户所抽到商品列表
router.get('/Vote',async (ctx) => {
    let data = {}
    let res = await DB.find("Commodity",{});
    // 所有奖品
    data.Allgoods = JSON.stringify(res);
    let ret =  await DB.find("koa",{});
    // 所有用户抽到的奖品
    data.Alluser = JSON.stringify(ret);
    // 返回的数据
    ctx.body = data;
})

// 注册新用户
router.post('/register',async (ctx) => {
//    获取表单提交的数据
    let {phone, password} = ctx.request.body , data = {}
    try{
        let ret = await DB.insert("koa",{"phone":phone,"password":password,"goods":[]})
        console.log("ret>>>>>>>>>"+ret)
        console.log(ret.result.ok)
        if(ret.result.ok){
            ctx.body = {
                code : 200,
                message : "注册成功"
            }
        }

    }catch (e) {
        console.log(e)
        ctx.body = {
            code : 400,
            message : "注册失败"
        }
    }
})

//用户手机号登录
router.post('/login',async (ctx) => {

    let {phone, password} = ctx.request.body , data = {}

    try{
        let ret =  await DB.find("koa",{"phone":phone,"password":password})
        if(ret[0].phone === phone && ret[0].password === password){
            ctx.body = {
                data : ret[0],
                code : 200,
                message : "登录成功了"
            }
            ctx.session.name = phone
        }

    }catch (e) {
        console.log(e)
        ctx.body = {
            code : 400,
            message : e
        }
    }
})



//退出登录
router.get('/exit',async (ctx) => {
    ctx.session.name = ""
})



// 启动路由
app.use(router.routes())


app.use(router.allowedMethods())  // 官方推荐用法，当所有路由中间件调用完后，根据 ctx.status 设置 response 响应头

app.listen(3000, () => {
    console.log(`服务运行于：http://localhost:3000`)
})

